package model

import (
	"manager/model/entity"
)

// OrderCreateRequest 创建现场数据
type OrderCreateRequest struct {
	EbikeTypeId int64 `json:"ebike_type_id"`

	EbikeId int64 `json:"ebike_id"`

	UserId int64 `json:"user_id"`

	Price int64 `json:"price"`

	OrderNo string `json:"order_no"`

	StoreId int64 `json:"store_id"`

	StoreName string `json:"store_name"`

	AreaId int64 `json:"area_id"`

	AreaName string `json:"area_name"`

	Status int `json:"status"`

	UpdatedAt int64 `json:"updated_at"`
}

// OrderUpdateRequest 更新现场数据
type OrderUpdateRequest struct {
	Id int64 `json:"id"`

	EbikeTypeId *int64 `json:"ebike_type_id"`

	EbikeId *int64 `json:"ebike_id"`

	UserId *int64 `json:"user_id"`

	Price *int64 `json:"price"`

	OrderNo *string `json:"order_no"`

	StoreId *int64 `json:"store_id"`

	StoreName *string `json:"store_name"`

	AreaId *int64 `json:"area_id"`

	AreaName *string `json:"area_name"`

	Status *int `json:"status"`

	CreatedAt int64 `json:"created_at"`

	UpdatedAt *int64 `json:"updated_at"`
}

// OrderListRequest 列表现场数据
type OrderListRequest struct {
	Index int `json:"index"`
	Size  int `json:"size"`

	Id int64 `json:"id"`

	EbikeTypeId *int64 `json:"ebike_type_id"`

	EbikeId *int64 `json:"ebike_id"`

	UserId *int64 `json:"user_id"`

	Price *int64 `json:"price"`

	OrderNo *string `json:"order_no"`

	StoreId *int64 `json:"store_id"`

	StoreName *string `json:"store_name"`

	AreaId *int64 `json:"area_id"`

	AreaName *string `json:"area_name"`

	Status *int `json:"status"`

	UpdatedAt *int64 `json:"updated_at"`

	StartTime *int64 `json:"start_time"`
	EndTime   *int64 `json:"end_time"`
}

// OrderListResponse 列表回包数据
type OrderListResponse struct {
	Total int          `json:"total"`
	List  []*OrderInfo `json:"list"`
}

// OrderInfoRequest 列表现场数据
type OrderInfoRequest struct {
	Id int64 `json:"id"`

	EbikeTypeId *int64 `json:"ebike_type_id"`

	EbikeId *int64 `json:"ebike_id"`

	UserId *int64 `json:"user_id"`

	Price *int64 `json:"price"`

	OrderNo *string `json:"order_no"`

	StoreId *int64 `json:"store_id"`

	StoreName *string `json:"store_name"`

	AreaId *int64 `json:"area_id"`

	AreaName *string `json:"area_name"`

	Status *int `json:"status"`

	UpdatedAt *int64 `json:"updated_at"`
}

// OrderInfo 详细数据
type OrderInfo struct {
	Id int64 `json:"id"`

	EbikeTypeId int64 `json:"ebike_type_id"`

	EbikeId int64 `json:"ebike_id"`

	UserId int64 `json:"user_id"`

	Price int64 `json:"price"`

	OrderNo string `json:"order_no"`

	StoreId int64 `json:"store_id"`

	StoreName string `json:"store_name"`

	AreaId int64 `json:"area_id"`

	AreaName string `json:"area_name"`

	Status int `json:"status"`

	CreatedAt int64 `json:"created_at"`

	UpdatedAt int64 `json:"updated_at"`
}

// OrderDeleteRequest 删除现场数据
type OrderDeleteRequest struct {
	Id int64 `json:"id"`
}

// OrdersEntityToDto entity数据转换
func OrdersEntityToDto(orders []*entity.Order) []*OrderInfo {
	out := make([]*OrderInfo, 0, len(orders))
	for _, c := range orders {
		out = append(out, OrderEntityToDto(c))
	}
	return out
}

// OrderEntityToDto entity数据转换
func OrderEntityToDto(e *entity.Order) *OrderInfo {
	return &OrderInfo{

		Id: e.Id,

		EbikeTypeId: e.EbikeTypeId,

		EbikeId: e.EbikeId,

		UserId: e.UserId,

		Price: e.Price,

		OrderNo: e.OrderNo,

		StoreId: e.StoreId,

		StoreName: e.StoreName,

		AreaId: e.AreaId,

		AreaName: e.AreaName,

		Status: e.Status,

		CreatedAt: e.CreatedAt,

		UpdatedAt: e.UpdatedAt,
	}
}
